package br.uefs.dexa.rfframework.gui.factory;

import br.uefs.dexa.rfframework.gui.interfaces.DigitalObjectPanel;
import br.uefs.dexa.rfframework.gui.interfaces.ObjectSetContainerPanel;
import br.uefs.dexa.rfframework.gui.interfaces.OutputObjectSetContainerPanel;
import br.uefs.dexa.rfframework.gui.interfaces.RFUserGUI;
import br.unicamp.ic.lis.rfframework.objects.IDigitalObject;

public abstract class GUIAbstractFactory {
	
	public abstract RFUserGUI getGUI();
	
	public abstract ObjectSetContainerPanel getQueryPatternPanel(RFUserGUI gui);
	
	public abstract ObjectSetContainerPanel getRelevantObjectsPanel(RFUserGUI gui);
	
	public abstract OutputObjectSetContainerPanel getObjectSetVisualizationPanel(RFUserGUI gui);
	
	public abstract DigitalObjectPanel getVisualizationObjectPanel(IDigitalObject object);
	
	public abstract DigitalObjectPanel getQueryObjectPanel(IDigitalObject object);
	
	public abstract DigitalObjectPanel getRelevantObjectPanel(IDigitalObject object);
	
	
	public static GUIAbstractFactory getInstance() 
	{
		return GUIImageFactory.getInstance(); 
		//return AltImageGUIFactory.getInstance(); //TODO: obter classe concreta como parametro externo, remover referencia à classe concreta.
	}
	
}
